// 该代码在主程序中使用pthread_create函数创建两个线程，这两个线程分别对应的入口函数为threadDeal1和threadDeal2，
// 他们的退出值分别为1和2，在主函数中分别调用pthrad_join函数阻塞线程1和线程2等待他们的退出，
// 然后打印这两个线程的退出值
//
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

// 线程1的入口函数
void *threadDeal1(void *res){
	printf("pthread-1 examing!\n");
	
	pthread_exit((void *)1);
	//return (void *)1;
}

// 线程2的入口函数
void *threadDeal2(void *res){
	printf("pthread-2 examing!\n");

	pthread_exit((void *)2);
}

int main(){

	// 用来计算pthread_create的返回值
	int err;

	pthread_t pthdid1, pthdid2;

	void *res;

	// 创建线程1
	err = pthread_create(&pthdid1, NULL, threadDeal1, NULL);

	if(err != 0){
		printf("线程1创建失败！错误为%s\n", strerror(err));
		exit(0);
	}
		
	// 创建线程2
	err = pthread_create(&pthdid2, NULL, threadDeal2, NULL);

	if(err != 0){
		printf("线程2创建失败! 错误为%s\n", strerror(err));
		exit(0);
	}

	// 使用pthread_join函数阻塞线程1
	err = pthread_join(pthdid1, &res);
	if(err !=0 ){
		printf("阻塞线程1失败! 错误为%s\n", strerror(err));
	}else{
		printf("%d\n", (int *)res);
	}
	
	// 阻塞线程2
	err = pthread_join(pthdid2, &res);
	if(err !=0 ){
		printf("阻塞线程2失败! 错误为%s\n", strerror(err));
	}else{
		printf("%d\n", (int *)res);
	}

	


	return 0;
}

